package a_doubleWrite;

import java.util.Arrays;

/**
 * 135. 分发糖果
 * 老师想给孩子们分发糖果，有 N 个孩子站成了一条直线，老师会根据每个孩子的表现，预先给他们评分。
 * <p>
 * 你需要按照以下要求，帮助老师给这些孩子分发糖果：
 * <p>
 * 每个孩子至少分配到 1 个糖果。
 * 评分更高的孩子必须比他两侧的邻位孩子获得更多的糖果。
 * 那么这样下来，老师至少需要准备多少颗糖果呢？
 *
 * @author luolidong
 * @version 1.0
 * @create 2021-07-27 11:34
 */
public class L135 {
    public int candy(int[] ratings) {
        if (ratings.length == 1) return 1;
        int[] left = new int[ratings.length];
        int[] right = new int[ratings.length];
        Arrays.fill(left, 1);
        Arrays.fill(right, 1);
        //从1索引开始，如果比i-1大，就+1
        for (int i = 1; i <ratings.length ; i++) {
            if(ratings[i]>ratings[i-1]){
                left[i]+=1;
            }
        }
        int count = left[ratings.length-1];
        for (int i = ratings.length-2; i >=0 ; i--) {
            if(ratings[i]>ratings[i+1]){
                right[i]+=1;
            }
            //记录
            count+=Math.max(right[i],left[i]);
        }
        return count;
    }

    public static void main(String[] args) {
        L135 l135 = new L135();
        int candy = l135.candy(new int[]{2, 2});
        System.out.println(candy);
    }
}
